.github(特別強調前面的小數點不可漏掉)。workflows(特別強調字尾的 s)。monitor.yml)放置於此目錄下。我們要告訴 GitHub 什麼時候該派出抓取情資。建議使用「雙軌制」觸發機制:
schedule):透過 Cron 語法來設定執行時間。由於 GitHub 伺服器使用的是 UTC 時間,要換算成台灣時間 (GMT+8) 需要減去 8 小時。設定為 0 23,0,4,5 * * *,代表系統會在台灣時間的每天 07:00、08:00、12:00 與 13:00 自動啟動。workflow_dispatch):這個設定允許我們在開發或除錯階段,隨時從 GitHub 後台手動點擊按鈕來觸發腳本執行。為了讓自動化機器人能將收集到的情資寫回我們的專案中,必須正確配置權限。這需要完成兩層設定:
permissions: contents: write,宣告機器人具備寫入內容的權限。在 Day2 我用了郵件預警功能,在執行 python main.py 階段,安全地將前置作業準備好的 MAIL_USERNAME、MAIL_PASSWORD 與 MAIL_TO 透過 GitHub Secrets 注入為環境變數,確保敏感的應用程式密碼不會直接暴露在程式碼中。
前置作業完成後,最後就是讓系統啟動並執行我們的 Python 程式:
ubuntu-latest),安裝 Python 3.10。接著會自動安裝 requests、beautifulsoup4、feedparser 與 playwright 等必備套件。python main.py。這支程式是整套監控系統的核心調度程式,負責串聯資料抓取、過濾、分析到發送警報的完整自動化生命週期。last_seen.json)、原始抓取紀錄 (raw_discovery.csv)、預警發送紀錄 (alert_history.log) 以及 Markdown 報表資料夾 (history_logs/*.md) 提交並推送回 GitHub。[skip ci] 標籤。這個小細節非常重要,它能防止這次的自動推送再次觸發 GitHub Actions,避免系統陷入無窮無盡的執行迴圈。ubuntu-latest 環境,指定 Python 3.10,並自動安裝爬蟲必備的 requests、beautifulsoup4、feedparser 與 playwright 套件。actions/cache@v4) 以及 Python pip 快取,這能大幅縮短每次 Action 啟動的等待時間並節省免費的運算資源。last_seen.json、原始資料、報表資料夾 history_logs/*.md 追蹤並寫回儲存庫。git diff --staged --quiet 判斷是否真的有新變更才進行 Commit,並且在 Commit 訊息中加入 [skip ci],這是一個重要的防護機制,能防止這次自動推送意外再次觸發 GitHub Actions 造成無限迴圈。